package com.ktjy.t382.jiushiwan.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ktjy.t382.jiushiwan.model.SysUser;
import com.ktjy.t382.jiushiwan.repository.UserMapper;
import com.ktjy.t382.jiushiwan.service.SysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SysUserServiceImp implements SysUserService {
    private static final Logger logger = LoggerFactory.getLogger(SysUserServiceImp.class);
    // 定义 Mapper
    @Autowired
   private UserMapper sysUserMapper;


    @Override
    /**
     * 查询所有用户列表
     */
    public List<SysUser> allSysUser() {
        List<SysUser> list = sysUserMapper.selectList(null);
        return list;
    }

    @Override
    /**
     * 根据用户ID查询用户信息
     *
     * @param id 用户的唯一标识符
     * @return 查询到的用户对象，如果未找到则返回null
     */
    public SysUser selectById(Integer id) {
        SysUser sysUser = sysUserMapper.selectById(id);
        return sysUser;
    }

    @Override
    /**
     * 根据用户ID删除用户信息并返回删除的记录数。
     *
     * @param id 要删除的用户的唯一标识符
     * @return 删除的记录数
     */
    public int deleteById(Integer id) {
        int count = sysUserMapper.deleteById(id);
        return count;
    }

    /**
     * 根据条件分页查询用户信息
     *
     * @param sysUser 用户查询条件
     * @param pageNo 当前页码，默认值为1
     * @param pageSize 每页显示的记录数，默认值为1
     * @return 分页查询结果
     */
    @Override
    public IPage<SysUser> selectPage(SysUser sysUser, Integer pageNo, Integer pageSize) {
        // 创建一个 QueryWrapper 对象，用于构建 MyBatis Plus 的查询条件
        QueryWrapper<SysUser> wrapper = new QueryWrapper<SysUser>();
        // 创建一个 Page 对象，指定当前页码和每页显示的记录数
        Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
        //Pager = sysUserMapper.selectPage(page, wrapper);` 调用`sysUser 调用 sysUserMapper 的selectPage 方法，传入分页对象和查询条件，获取分页查询结果
        //        IPage<SysUser> userPagerMapper`的`selectPage`方法，传入分页对象和查询条件，获取分页查询结果。
        IPage<SysUser>  userPager = sysUserMapper.selectPage(page,wrapper);
        // 处理页码越界问题
        if (pageNo < 1) {
            pageNo = 1;
        }
        return userPager;
    }

    /**
     * 插入新用户信息
     *
     * @param sysUser 包含要插入的用户信息的对象
     * @return 插入成功的用户数量
     */
    @Override
    public int insert(SysUser sysUser) {
        int count = sysUserMapper.insert(sysUser);
        return count;
    }

    /**
     * 根据ID更新用户信息
     *
     * @param sysUser 包含要更新的用户信息的对象
     * @return 更新成功的用户数量
     */
    @Override
    public int updateById(SysUser sysUser) {
        int count = sysUserMapper.updateById(sysUser);
        return count;
    }
}
